package com.river.springbootdemo.thinkingjava.generics;

class SelfBounded<T extends SelfBounded<T>> {
    T element;

    SelfBounded<T> set(T args) {
        element = args;
        return this;
    }

    T get() {
        return element;
    }
}

class A extends SelfBounded<A>{}
class B extends SelfBounded<A>{}
class C extends SelfBounded<C>{
    C setAndGet(C arg){
        set(arg);
        return get();
    }
}


public class SelfBounding {
}
